<html>
	
	<head>
	<link rel="stylesheet" type="text/css" href="doc.css" />
	<style type="text/css">
	.auto-style1 {
		border-style: solid;
		border-width: 1px;
	}
	.auto-style2 {
	font-size: large;
	margin-left: 40px;
}
	</style>
	<script type="text/javascript" language="JavaScript"><!--
	function To(url) {
	location.replace(url);
	}
	//--></script>
	</head>

	<body>
		<h1><u>Test Plan</u></h1>
		<h2>Overall Testing Philosophy</h2>
		<p>In order to ensure full operation of the current code, test scripts 
		have been designed to catch any potential errors. Using a somewhat 
		exhaustive testing philosophy, we have created five separate test programs that check if our code is able to 
		break down the program and place the label, operation, function etc. in 
		the correct columns; and be able to parse valid and invalid FFA source code. 
		These test scripts are broken down as follows:</p>
		<ol>
			<li>Check all valid combinations of label, operation, function, 
			rlabel and comments</li>
			<li>Check for leading zeros and operations and functions with mixed 
			cases</li>
			<li>Check for labels with the same name as either operations or 
			functions</li>
			<li>Check for the extreme values and special characters</li>
			<li>Make sure all FFA syntax and other possible errors are found and the correct error message is 
			displayed</li>
		</ol>
		<h2>Table of Contents</h2>
		<table class="auto-style1">
			<tr>
				<td style="width: 113px">
					<a href="javascript:To('#comb_test')">Combination Test</a>
				</td>
				<td style="width: 66px">
					<a href="javascript:To('#case_test')">Case Test</a>
				</td>
				<td style="width: 69px">
					<a href="javascript:To('#label_test')">Label Test</a>
				</td>
				<td style="width: 70px">
					<a href="javascript:To('#value_test')">Value Test</a>
				</td>
				<td style="width: 71px">
					<a href="javascript:To('#error_test')">Error_Test</a></td>
			</tr>
		</table>
		
		<p class="auto-style2"><a href="test_table.html">Testing Results</a></p>
		<h2>Test Programs</h2>
		<p>
		To make the operation, function and symbol table, our code inputs text from the test programs line by line and then splits up the program in words and assigns the 
		individual words to string variables such as label, operation, function etc. respectively. So the test programs will be written in such a way that we not only check 
		for all valid variations of the functions but also check to see if comments and labels don't affect parsing and are assigned to the right string.</p>
		
		<ul>
		<li><a name="comb_test">Combination_Test</a>: This test checks to see if all the valid combinations of label, operation, instruction, rlabel and comments parse correctly. 
		This program will have all functions of Cntl and Stack operations. The test program will have lines with</li>
			<ul>
				<li>Labels, operation, function, rlabel and comments.</li>
				<li>No label or comments.</li>
				<li>Label and no comments.</li>
				<li>Comments but no label.</li>
				<li>And comments only.</li>
			</ul>
		<font size=5>
		<a href="../test scripts/Combinations_Test.txt">Combination Test(.txt)</a></font><br>
		<a href="../test scripts/comb_out.txt"><font size=5>Combination Test Output(.txt)</font></a>
			<br><br>
			<li><a name="case_test">Case_Test</a>: This test checks to see if numbers with leading zeros parse correctly and 
		checks if the operations and functions are case insensitive. This test program will check 
		for all functions of Soper operation. The test programs will contain operations and functions which are</li>
			<ul>
				<li>All upper case.</li>
				<li>All lower case.</li>
				<li>Mixed case.</li>
			</ul>
			<font size=5><a href="../test scripts/Case_Test.txt">Case Test(.txt)</a></font><br>
			<a href="../test scripts/case_out.txt"><font size=5>Case Test Output(.txt)</font></a>
			<br><br>
			<li><a name="label_test">Label_Test</a>: This test program will test to see if labels with the same name as operations 
		and functions parse correctly. This test program will test all the functions in the 
		Jump operation. The labels will have names that are exactly the same as</li>
			<ul>
				<li>Operations (Stack, Cntl, Jump, Soper and Moper)</li>
				<li>Functions (Add, Push, Halt etc.)</li>
			</ul>
			<font size=5><a href="../test scripts/Label_Test.txt">Label Test(.txt)</a></font><br>
			<a href="../test scripts/label_out.txt"><font size=5>Label Test Output(.txt)</font></a><br>
			<br>
			<li><a name="value_test">Value_Test</a>: This test program checks to see if the extreme values of Hex, Binary and 
		Integers parse correctly. The program also checks if special characters for C= parse correctly. 
		This test program implements all the functions of Moper operation.</li>
			<a href="../test scripts/Value_Test.txt"><font size=5>Value Test(.txt)</font></a><br>
			<font size=5><a href="../test scripts/value_out.txt">Value Test Output(.txt)</a></font>
			<br><br>
			<li><a name="error_test">Error_Test</a>: This test program makes sure various syntax and other errors are found 
		properly. It will also test that the correct error message is displayed. The assembler should continue parsing 
		all correct lines of code even after many error messages have been displayed on previous lines of code.<br>
			<a href="../test%20scripts/Error_Test.txt"><font size=5>Error Test(.txt)</font></a><br>
			<font size=5><a href="../test%20scripts/Error_Out.txt">Error Test Output(.txt)</a></font></ul>
		
		<p>
			Note: In all these programs we check for Start and End directives
		</p>
	</body>
</html>
